package redislock

import "fmt"

// Init 初始化Redis锁相关参数
func Init(redisDoFunc RedisDoFunc, options ...InitOption) error {
	// 设置Redis命令执行函数
	if redisDoFunc == nil {
		return fmt.Errorf("redisDoFunc is nil")
	}
	redisDo = redisDoFunc
	// 应用自定义参数
	for _, option := range options {
		option()
	}
	return nil
}

// InitOption 定义可选参数函数类型（用于自定义锁参数）
type InitOption func()

// WithLogger 设置日志
func WithLogger(logger Logger) InitOption {
	return func() {
		if logger != nil {
			globalLogger = logger
		}
	}
}

// WithFullKey 设置锁的完整key
func WithFullKey(fn func(key string) string) InitOption {
	return func() {
		if fn != nil {
			fullKey = fn
		}
	}
}
